Nodejs 文件系统(fs) 删除文件夹 及 子文件夹下的所有内容

Node 文件系统fs为我们提供了一些方法 进行文件和文件夹的读写删除等操作
下边将介绍删除文件夹及子文件夹下的所有内容的相关命令(均含有同步和异步方法)

  1. fs.stat && fs.statSync 提供了访问文件的属性信息
  2. fs.readdir && fs.readdirSync 提供读取文件目录信息
  3. fs.unlink && unlinkSync 进行删除文件操作,不可以删除文件夹
  4. fs.rmdir && fs.rmdirSync 进行删除文件夹操作,但文件夹必须为空文件夹

接下来 进行文件夹的删除工作
第一步:将所有的文件删除(清空所有的文件夹)
第二步:删除所有的空文件夹
完成以上两步,就可以达到我们的目的了,下边来看看具体的代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
router.get('/removeFile',function(req,res,next){
var rootFile = '../赚钱啦';//要删除的文件夹 url
//删除所有的文件(将所有文件夹置空)
var emptyDir = function(fileUrl){
var files = fs.readdirSync(fileUrl);//读取该文件夹
files.forEach(function(file){
var stats = fs.statSync(fileUrl+'/'+file);
if(stats.isDirectory()){
emptyDir(fileUrl+'/'+file);
}else{
fs.unlinkSync(fileUrl+'/'+file);
console.log("删除文件"+fileUrl+'/'+file+"成功");
}
});
}
//删除所有的空文件夹
var rmEmptyDir = function(fileUrl){
var files = fs.readdirSync(fileUrl);
if(files.length>0){
var tempFile = 0;
files.forEach(function(fileName)
{
tempFile++;
rmEmptyDir(fileUrl+'/'+fileName);
});
if(tempFile==files.length){//删除母文件夹下的所有字空文件夹后,将母文件夹也删除
fs.rmdirSync(fileUrl);
console.log('删除空文件夹'+fileUrl+'成功');
}
}else{
fs.rmdirSync(fileUrl);
console.log('删除空文件夹'+fileUrl+'成功');
}
}
emptyDir(rootFile);
rmEmptyDir(rootFile);
res.send('YES!!!');
});

页面返回 YES!!! 就看看你的文件目录吧,是不是已经不存在了,大功告成~

代码优化:清空文件夹和删除文件夹一次进行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var deleteFolder = module.exports.deleteFolder= function(path) {
var files = [];
if( fs.existsSync(path) ) {
files = fs.readdirSync(path);
files.forEach(function(file,index){
var curPath = path + "/" + file;
if(fs.statSync(curPath).isDirectory()) { // recurse
deleteFolder(curPath);
} else { // delete file
fs.unlinkSync(curPath);
}
});
fs.rmdirSync(path);
}
};